SQlite源码分析

*sqlite3StrAccumFinish()函数

char *sqlite3StrAccumFinish(StrAccum *p){
  if( p->zText ){
    p->zText[p->nChar] = 0;
    if( p->useMalloc && p->zText==p->zBase ){
      if( p->useMalloc==1 ){
        p->zText = sqlite3DbMallocRaw(p->db, p->nChar+1 );
      }else{
        p->zText = sqlite3_malloc(p->nChar+1);
      }
      if( p->zText ){
        memcpy(p->zText, p->zBase, p->nChar+1);
      }else{
        p->mallocFailed = 1;
      }
    }
  }
  return p->zText;
}
功能:完成一个字符,并且确保它是以0结尾的。同时返回一个指针,该指针是指向这个字符的,如果途中遇到任何错误都返回一个Null空指针。
流程图: